
#ifndef SX_OPENGL_DEFAULT_BEZIER_CURVE_RENDERER_H
#define SX_OPENGL_DEFAULT_BEZIER_CURVE_RENDERER_H

#include <sxGraphicsObjectRenderer.h>
#include <sxStaticRepresentation.h>
#include <sxBezierCurve.h>
#include <sxOpenGL_Context.h>

/* Sx library types. */
using Sx::Graphics::Objects::BezierCurve;
using Sx::Graphics::Objects::Rendering::GraphicsObjectRenderer;
using Sx::Graphics::StaticRepresentation;
using Sx::OpenGL::Graphics::Contexts::OpenGL_Context;

namespace Sx {
namespace OpenGL {
namespace Graphics {
namespace Objects {
namespace Rendering {

class OpenGL_DefaultBezierCurveRenderer : public GraphicsObjectRenderer<OpenGL_Context, BezierCurve, StaticRepresentation> {
public:
	OpenGL_DefaultBezierCurveRenderer(const std::shared_ptr<OpenGL_Context>& graphicsContext);
	virtual ~OpenGL_DefaultBezierCurveRenderer();

	bool construct(OpenGL_Context* const graphicsContext, BezierCurve* const curve, StaticRepresentation* const physicalRepresentation);
	void update(OpenGL_Context* const graphicsContext, BezierCurve* const curve, float dt);
	void render(OpenGL_Context* const graphicsContext, BezierCurve* const curve, StaticRepresentation* const physicalRepresentation);

};

}

}

}

}

}

#endif
